/**
 * mobx-miniprogram-bindings库补丁文件
 * 解决使用MobX数据绑定时的TypeError错误
 */

// 安全获取全局对象的函数
function getGlobalObject() {
  if (typeof globalThis !== 'undefined') return globalThis;
  if (typeof global !== 'undefined') return global;
  if (typeof window !== 'undefined') return window;
  if (typeof self !== 'undefined') return self;
  return {};
}

// 获取全局对象
const globalObj = getGlobalObject();

// 设置全局process对象（可能被mobx使用）
if (typeof globalObj.process === 'undefined') {
  globalObj.process = {
    env: {
      NODE_ENV: 'production'
    }
  };
  
  // 尝试暴露到全局作用域
  try {
    process = globalObj.process;
  } catch (e) {
    console.warn('无法设置全局process变量');
  }
}

// 导入原始库
const originalBindings = require('./index.js');

// 安全包装createStoreBindings函数以添加错误处理
const safeCreateStoreBindings = function(instance, options) {
  try {
    // 确保instance存在且为有效对象
    if (!instance || typeof instance !== 'object') {
      console.error('[mobx-bindings] Invalid instance:', instance);
      return {
        updateStoreBindings: function() {},
        destroyStoreBindings: function() {}
      };
    }
    
    // 确保setData方法存在
    if (typeof instance.setData !== 'function') {
      console.warn('[mobx-bindings] Instance has no setData method, using empty implementation');
      instance.setData = function() {};
    }
    
    // 调用原始函数
    return originalBindings.createStoreBindings(instance, options);
  } catch (error) {
    console.error('[mobx-bindings] Error creating store bindings:', error);
    return {
      updateStoreBindings: function() {},
      destroyStoreBindings: function() {}
    };
  }
};

// 创建安全的导出对象
const safeBindings = {
  ...originalBindings,
  createStoreBindings: safeCreateStoreBindings
};

// 导出包装后的库
module.exports = safeBindings; 